#pragma once

#include <cl\opencl.h>
#include "ftlibopencl.h"
#include "include_clFFT.h"

enum class CLFFTHANDLETYPE : uint16_t
{
	_2dRealToComplexPackedFftw,
	_2dRealToComplex,
	_2dComplexToComplex,
	_2dComplexHermetianToReal
};

struct OPENCLFTPLANHANDLEInternal
{
	clfftPlanHandle	clFftplan;	// size_t
	//cl_mem srcMemoryHandle;		// void*
	//cl_mem outMemoryHandle;
	cl_mem tempMemoryHandle;	// void*
	cl_mem inoutMemoryHandle;	// void*
	cl_context cl_dev_context;	// void*
	cl_command_queue cl_queue;	// void*
	CLFFTHANDLETYPE planType;
};

union CLFTPLANHANDLEDual
{
	OPENCLFTPLANHANDLEInternal	internal;
	OPENCLFTPLANHANDLE			external;
};
